package com.example.myproject.seriable;

import java.io.Serializable;

/**
 * Created by Administrator on 2018/1/10.
 * local class incompatible: stream classdesc serialVersionUID = -7907168010577251448
 * 测试场景1：反序列化之前只有userName，反序列化的时候加入了age
 * 序列化和反序列化必须制定序列化id,这是类的版本信息，如果后期加了属性，运行生成的Id和之前产生的不一致就会把报错
 * 测试
 *
 * 1、如果子类实现Serializable接口而父类未实现时，父类不会被序列化，但此时父类必须有个无参构造方法，否则会抛InvalidClassException异常。
 2、静态变量不会被序列化，那是类的“菜”，不是对象的。
 3、transient关键字修饰变量可以限制序列化。
 4、虚拟机是否允许反序列化，不仅取决于类路径和功能代码是否一致，一个非常重要的一点是两个类的序列化 ID 是否一致，就是 private static final long serialVersionUID = 1L。
 5、Java 序列化机制为了节省磁盘空间，具有特定的存储规则，当写入文件的为同一对象时，并不会再将对象的内容进行存储，而只是再次存储一份引用。反序列化时，恢复引用关系。
 6、序列化到同一个文件时，如第二次修改了相同对象属性值再次保存时候，虚拟机根据引用关系知道已经有一个相同对象已经写入文件，因此只保存第二次写的引用，所以读取时，都是第一次保存的对象。读者在使用一个文件多次 writeObject 需要特别注意这个问题(基于第5点)。

 http://blog.csdn.net/u012364372/article/details/51210693
 可以采用默认都是1的问题，集成一个基类，基类是1
 */
public class SeriableDemo implements Serializable {
    //加入username
    private String userName;

    private String age;

    private String ff;

    private String fsdsd;

    public String getFsdsd() {
        return fsdsd;
    }

    public void setFsdsd(String fsdsd) {
        this.fsdsd = fsdsd;
    }

    public String getFf() {
        return ff;
    }

    public void setFf(String ff) {
        this.ff = ff;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}
